package com.iuie.ns.frame.web.dataset.vo;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * @description 分页对应的实体类
 * @author lj
 * @createTime 2016年8月30日 上午11:03:22
 */
public class Page {
	
	private int page; //当前页码
	private int rows; //每页显示记录条数,设置为“-1”表示不进行分页（分页无效）
	private long count;// 总记录数，设置为“-1”表示不查询总数
	
	public int getPage() {
		return page;
	}
	public void setPage(int page) {
		this.page = page;
	}
	public int getRows() {
		return rows;
	}
	public void setRows(int rows) {
		this.rows = rows;
	}
	public long getCount() {
		return count;
	}
	public void setCount(long count) {
		this.count = count;
	}
	
	/**
	 * hibernate 获取分页查询的第一行在数据库表中的第几行
	 * @createTime 2017年1月2日 下午3:06:34
	 * @return
	 */
	@JsonIgnore
	public int getFirstRowNumber(){
		// if rows = 10, page = 1 ,then firstRowNumber = 10*(1-1)+1 = 1
		// if rows = 10, page = 2 ,then firstRowNumber = 10*(2-1)+1 = 11
		return this.rows*(this.page-1); 
	}
	
	/**
	 * hibernate 获取分页查询的最后一行在数据库表中的第几行
	 * @createTime 2017年1月2日 下午3:08:01
	 * @return
	 */
	@JsonIgnore
	public long getMaxRowNumber(){
		long max = this.getFirstRowNumber() + this.rows;
		if (max>this.count) {
			max = this.count;
		}
		return max;
	}
	
	/**
	 * 用于设置count
	 * @param list
	 */
	public <T> void loadData(List<T> list){
		if (list instanceof com.github.pagehelper.Page) {
			com.github.pagehelper.Page<T> mPage = (com.github.pagehelper.Page<T>) list;
			this.count = mPage.getTotal();
		} else {
			this.count = list.size();
		}
	}
}
